@echo off
setlocal enableextensions

echo ========================================
echo 教学FTP服务器环境检测工具
echo ========================================
echo.

REM 基本信息
echo [INFO] 系统信息：
ver
echo [INFO] 当前用户: %USERNAME%
echo [INFO] 当前目录: %CD%
echo.

REM 检查项目文件
echo [INFO] 检查项目文件...
set "BASE_DIR=%~dp0"
cd /d "%BASE_DIR%"

if exist "main.py" (
    echo [OK] main.py 存在
) else (
    echo [ERROR] main.py 缺失
)

if exist "requirements.txt" (
    echo [OK] requirements.txt 存在
) else (
    echo [ERROR] requirements.txt 缺失
)

if exist "env\" (
    echo [OK] env\ 虚拟环境目录存在
    if exist "env\Scripts\python.exe" (
        echo [OK] 虚拟环境 Python 可执行文件存在
        "env\Scripts\python.exe" --version >nul 2>&1
        if %ERRORLEVEL% EQU 0 (
            echo [OK] 虚拟环境 Python 可运行
            for /f "tokens=*" %%i in ('"env\Scripts\python.exe" --version 2^>^&1') do echo [INFO] 版本: %%i
        ) else (
            echo [ERROR] 虚拟环境 Python 无法运行
        )
    ) else (
        echo [ERROR] 虚拟环境 Python 可执行文件缺失
    )
) else (
    echo [WARN] env\ 虚拟环境目录不存在
)

if exist "python_embed.zip" (
    echo [OK] python_embed.zip 嵌入式 Python 存在
    for %%A in ("python_embed.zip") do echo [INFO] 文件大小: %%~zA 字节
) else (
    echo [WARN] python_embed.zip 嵌入式 Python 不存在
)

if exist "python_embed\" (
    echo [OK] python_embed\ 目录存在
    if exist "python_embed\python.exe" (
        echo [OK] 嵌入式 Python 可执行文件存在
    ) else (
        echo [WARN] 嵌入式 Python 可执行文件不存在
    )
) else (
    echo [INFO] python_embed\ 目录不存在（首次运行时会自动创建）
)

echo.

REM 检查系统 Python
echo [INFO] 检查系统 Python...
where py >nul 2>&1
if %ERRORLEVEL% EQU 0 (
    echo [OK] Python 启动器 (py) 可用
    py --version >nul 2>&1
    if %ERRORLEVEL% EQU 0 (
        for /f "tokens=*" %%i in ('py --version 2^>^&1') do echo [INFO] 版本: %%i
    ) else (
        echo [WARN] Python 启动器无法获取版本
    )
) else (
    echo [WARN] Python 启动器 (py) 不可用
)

where python >nul 2>&1
if %ERRORLEVEL% EQU 0 (
    echo [OK] python 命令可用
    python --version >nul 2>&1
    if %ERRORLEVEL% EQU 0 (
        for /f "tokens=*" %%i in ('python --version 2^>^&1') do echo [INFO] 版本: %%i
    ) else (
        echo [WARN] python 命令无法获取版本
    )
) else (
    echo [WARN] python 命令不可用
)

echo.

REM 检查 PowerShell
echo [INFO] 检查 PowerShell...
powershell -nologo -noprofile -command "Write-Host '[OK] PowerShell 可用'; Write-Host '[INFO] 版本:' $PSVersionTable.PSVersion" 2>nul
if %ERRORLEVEL% NEQ 0 (
    echo [ERROR] PowerShell 不可用或有问题
)

echo.

REM 检查网络端口
echo [INFO] 检查常用端口占用...
netstat -ano | findstr ":8000" | findstr LISTENING >nul 2>&1
if not errorlevel 1 (
    echo [WARN] 端口 8000 已被占用
    netstat -ano | findstr ":8000" | findstr LISTENING
) else (
    echo [OK] 端口 8000 可用
)

netstat -ano | findstr ":2121" | findstr LISTENING >nul 2>&1
if not errorlevel 1 (
    echo [WARN] 端口 2121 已被占用
    netstat -ano | findstr ":2121" | findstr LISTENING
) else (
    echo [OK] 端口 2121 可用
)

echo.

REM 检查日志目录
if exist "logs\" (
    echo [OK] logs\ 目录存在
    if exist "logs\server.log" (
        echo [INFO] 发现服务器日志文件
        for %%A in ("logs\server.log") do echo [INFO] 日志大小: %%~zA 字节
        echo [INFO] 最近几行日志内容：
        powershell -nologo -noprofile -command "Get-Content 'logs\server.log' -Tail 5 2>$null | ForEach-Object { Write-Host $_ }"
    ) else (
        echo [INFO] 暂无服务器日志文件
    )
) else (
    echo [INFO] logs\ 目录不存在（首次运行时会自动创建）
)

echo.
echo ========================================
echo 环境检测完成
echo ========================================
echo.

REM 给出建议
echo [建议] 根据检测结果：
if not exist "main.py" (
    echo - 请确认在正确的项目目录中运行此脚本
)
if not exist "env\" (
    if not exist "python_embed.zip" (
        where py >nul 2>&1 || where python >nul 2>&1
        if errorlevel 1 (
            echo - 请安装 Python 3.10+ 或提供 python_embed.zip 文件
        ) else (
            echo - 系统 Python 可用，首次运行 start.bat 会自动创建虚拟环境
        )
    ) else (
        echo - 嵌入式 Python 可用，首次运行 start.bat 会自动解压使用
    )
) else (
    echo - 虚拟环境已就绪，可直接运行 start.bat
)

echo.
echo 按任意键退出...
pause >nul